/*
 * @Author: Kiro AI Assistant
 * @Date: 2025-01-10
 * @Description: 页面状态枚举 - 定义通用的页面加载状态
 */

/// 页面状态枚举
/// 定义所有页面的标准化状态
enum PageState {
  /// 初始状态
  /// 页面刚创建时的默认状态
  idle,

  /// 加载中状态
  /// 正在请求数据或执行异步操作
  loading,

  /// 成功状态
  /// 数据加载成功且有内容
  success,

  /// 空数据状态
  /// 数据加载成功但没有内容
  empty,

  /// 错误状态
  /// 数据加载失败或发生错误
  error,

  /// 没有更多数据状态
  /// 分页加载时已到达最后一页
  noMore,
}

/// PageState 扩展方法
/// 提供页面状态的便捷判断方法
extension PageStateExtension on PageState {
  /// 是否为加载中状态
  bool get isLoading => this == PageState.loading;

  /// 是否为成功状态
  bool get isSuccess => this == PageState.success;

  /// 是否为空数据状态
  bool get isEmpty => this == PageState.empty;

  /// 是否为错误状态
  bool get isError => this == PageState.error;

  /// 是否为没有更多数据状态
  bool get isNoMore => this == PageState.noMore;

  /// 是否为初始状态
  bool get isIdle => this == PageState.idle;

  /// 是否可以显示内容
  /// 成功状态或没有更多数据状态时可以显示内容
  bool get canShowContent => isSuccess || isNoMore;

  /// 是否需要显示加载指示器
  bool get shouldShowLoading => isLoading;

  /// 是否需要显示错误页面
  bool get shouldShowError => isError;

  /// 是否需要显示空状态页面
  bool get shouldShowEmpty => isEmpty;

  /// 获取状态描述
  String get description {
    switch (this) {
      case PageState.idle:
        return '初始状态';
      case PageState.loading:
        return '加载中';
      case PageState.success:
        return '加载成功';
      case PageState.empty:
        return '暂无数据';
      case PageState.error:
        return '加载失败';
      case PageState.noMore:
        return '没有更多数据';
    }
  }
}
